package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.GradeBean;
import com.project.bean.RoleBean;

import java.lang.reflect.Array;
import java.util.List;

/**
 * 角色表业务方法
 */
public interface IRoleService {

    /**
     * 查询所有角色
     * 查询角色表中所有的记录。
     * @return  角色集合
     */
    List<RoleBean> findAll();


    /**查询角色的权限
     * 通过角色id数组查询角色权限
     * 通过角色id数组查询角色权限集合，去除重复权限。
     * @param array 角色id数组
     * @return  权限集合,去除重复权限
     */
    List<GradeBean> findByIdArray(int[] array);
    /** 分页查询角色集合
     *
     * @param pageNO    页码
     * @return  分页集合对象
     */
    IPage<RoleBean> findAllByPage(Integer pageNO);


    /**
     * 通过角色id删除角色
     * 1、通过角色id删除用户角色中间表
     * 2、通过角色id删除权限角色中间表
     * 3、通过角色id删除角色
     * @param id    角色ID
     */
    void del(Integer id);

    /**
     * 按角色id 查询角色信息，同时查询角色拥有的权限集合
     * @param id 角色 id
     * @return  角色对象
     */
    RoleBean findById(Integer id);

    /**
     * 查询所有的权限信息
     * @return 权限集合
     */
    List<GradeBean> findAllGrade();
    /**
     * 通过角色id修改用户的权限
     * 先通过角色id删除中间表相关信息，再添加新的权限信息
     * @param id    角色id
     * @param newArray  用户新权限id数组
     */
    void updateGrade(Integer id,int[]newArray);

    /**
     * 添加角色
     * @param roleBean  角色对象、
     * @param gradeArray 权限id数组
     */
    void add(RoleBean roleBean,int[] gradeArray);
}
